package com.kinth.dbutil;
/**
 * @title : 数据库连接类
 * @content: 主要把数据库连接部分的代码进行封装。只要调用这个类的一个入口函数即可获得一个数据库连接。
 *          1. getConn可以用来获得一个连接。closeConn可以用来关闭连接。
 * @author: kaikai
 * @time  : 2017/1/11
 */

import java.sql.*;

public class DBConnect {

	
	// 1. 首先，驱动就是一个jar包，所以名字符合java包的命名规范。另外，驱动是数据库厂家生产的，所以数据库一定在前。就这么多。
	private String driverName = "com.mysql.jdbc.Driver";
	// 其实自己到目前为止还不知道为什么driverurl有什么用，也许以前知道现在忘了。//?useUnicode=true&useSSL=false
	private String driverURL = "jdbc:mysql://rds85yhg33trtgtpkwacnpublic.mysql.rds.aliyuncs.com:3306/data_db";
	private String username = "data_user";
	private String password = "data12345!";
//	private String driverURL = "jdbc:mysql://localhost:3306/test";
//	private String username = "root";
//	private String password = "123456";
	Connection conn = null;

	/**
	 * 获得连接的入口
	 * 
	 * @return Connection: 返回一个连接
	 */
	public Connection getConn() {
		return conn;
	}

	/**
	 * 关闭一个连接。
	 */
	public void closeConn() {
		try {
			this.conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 构造函数。1. 加载驱动。2,生成连接。
	 */
	public DBConnect() {
		try {
			Class.forName(driverName);
			try {
				this.conn = DriverManager.getConnection(driverURL, username, password);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		DBConnect dbc = new DBConnect();
		Connection conn = dbc.getConn();
		String sql = "select * from proxy";
		// 为什么这么写的好处也忘了，只记得是为了防止被黑。这是第三步。
		try {
			PreparedStatement ps = conn.prepareStatement(sql);
			// 第四步，获得结果集。
			ResultSet rs = ps.executeQuery();
			while (!rs.wasNull() && rs.next()) {
				System.out.println(rs.getString(1));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			dbc.closeConn();
		}
	}

}
